id: task-100.3 title: Implement API endpoints status: Done assignee: [] created_date: '2025-06-22' updated_date: '2025-07-06' labels: [] dependencies:
- task-100.2 parent_task_id: task-100
Description
Create REST API endpoints for tasks, drafts, and board operations. These endpoints will provide a clean interface between the React frontend and the existing Backlog.md Core functionality.
API Design
RESTful Endpoints
Tasks
-
GET /api/tasks- List all tasks with optional filtering- Query params:
?status=todo&assignee=@user&labels=bug,feature - Returns: Array of Task objects with metadata
- Query params:
-
GET /api/tasks/:id- Get specific task details- Returns: Task object with full markdown content
-
POST /api/tasks- Create new task- Body:
{ title, description, assignee, status, labels, parentId?, dependencies? } - Returns: Created task with generated ID
- Body:
-
PUT /api/tasks/:id- Update existing task- Body: Partial task object with fields to update
- Returns: Updated task object
-
DELETE /api/tasks/:id- Archive a task- Returns: Success message
Board
GET /api/board- Get board data with all tasks grouped by status- Returns:
{ statuses: string[], tasks: TaskWithMetadata[], config: BoardConfig }
- Returns:
Drafts
-
GET /api/drafts- List all drafts- Returns: Array of Draft objects
-
POST /api/drafts/:id/promote- Promote draft to task- Returns: New task object
Configuration
GET /api/config- Get project configuration- Returns: Config object with statuses, resolution strategy, etc.
Response Format
All API responses will follow a consistent format:
// Success response
{
"success": true,
"data": { ... }
}
// Error response
{
"success": false,
"error": {
"code": "TASK_NOT_FOUND",
"message": "Task with ID task-123 not found"
}
}
Validation Requirements
Input Validation with Zod:
- Define Zod schemas for all request bodies and parameters
- Validate query parameters for filtering endpoints
- Provide clear validation error messages
- Ensure type safety between frontend and backend
Schema Definitions:
- Task creation/update schemas
- Query parameter validation schemas
- Response format schemas for consistency
Error Handling
400 Bad Request- Invalid input parameters (include Zod validation errors)404 Not Found- Resource doesn't exist409 Conflict- Operation would create conflict422 Unprocessable Entity- Valid format but business logic validation failed500 Internal Server Error- Unexpected server error
Integration with Core
All endpoints will use the existing Core class methods:
core.filesystem.listTasks()core.filesystem.loadTask()core.createTask()core.updateTask()core.archiveTask()core.filesystem.loadConfig()- etc.
This ensures consistency between CLI and web operations.
Acceptance Criteria
- [x] GET /api/tasks returns all tasks with optional query filtering
- [x] GET /api/tasks/:id returns specific task
- [x] POST /api/tasks creates new task with Zod validation
- [x] PUT /api/tasks/:id updates task with Zod validation
- [x] DELETE /api/tasks/:id archives task
- [x] GET /api/statuses returns available statuses
- [x] GET /api/board returns board data
- [x] GET /api/drafts returns all drafts
- [x] GET /api/config returns project configuration
- [x] All request bodies validated with Zod schemas
- [x] Clear validation error messages returned for invalid input
- [x] All endpoints use existing Core functions
- [x] Consistent JSON response format across all endpoints